<?php

class CampaniaController extends AweController {

    /**
     * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
     * using two-column layout. See 'protected/views/layouts/column2.php'.
     */
    public $layout = '//layouts/column2';
    public $defaultAction = 'admin';

    public function filters() {
        return array(
            array('CrugeAccessControlFilter'),
        );
    }

    /**
     * Displays a particular model.
     * @param integer $id the ID of the model to be displayed
     */
    public function actionView($id) {
        $modelCampaniaOwner = new CampaniaClientesOwner('search');
        $modelActividad = new Actividad('search');
        $modelCampaniaOwner->unsetAttributes(); // clear any default values
//        $modelCampaniaOwner->campania_id = $id;
//        var_dump($id);
        Yii::import("xupload.models.XUploadForm");
        $archivos = new XUploadForm;
        if (Yii::app()->request->isAjaxRequest) {
            if (isset($_GET['search'])) {
                $modelCampaniaOwner->campania_id = $id;
                $modelCampaniaOwner->attributes = $this->assignParams($_GET['search']);
            }
        }
//caraga del modelo de campaña
        $model = $this->loadModel($id);
//verificar si la campaña tiene que iniciar
        if ($model->fecha_inicio <= date('Y-m-d')) {
            $model->estado = Campanias_Constants::INICIADA;
            $model->save();
        }
        $this->render('view', array(
            'model' => $model,
            'archivos' => $archivos,
            'modelCampaniaOwner' => $modelCampaniaOwner,
        ));
    }

    /**
     * Creates a new model.
     * If creation is successful, the browser will be redirected to the 'view' page.
     * *-Formato de fechas, guardar usuario de creación-
     * **@autor Alex Yépez <ayepez@tradesystem.com.ec>
     */
    public function actionCreate() {
        $model = new Campania;
        $model->usuario_creacion_id = Yii::app()->user->id;
        $this->performAjaxValidation($model, "campania-form");
        if (isset($_POST['Campania'])) {
            $model->attributes = $_POST['Campania'];
//formatear fecha al guardar
//inicio
            $model->fecha_inicio = $model->fecha_inicio ? Util::FormatDate($model->fecha_inicio, "Y/m/d") : null;
//inicio
            $model->fecha_fin = $model->fecha_fin ? Util::FormatDate($model->fecha_fin, "Y/m/d") : null;
            if ($model->fecha_inicio >= date('Y-m-d')) {
                $model->estado = Campanias_Constants::INICIADA;
            }
            if ($model->save()) {
                Actividad::registrarActividad($model, Actividad::TIPO_CREATE);
//save detalle
                if (isset($_POST['Campania']['accion']) && ($_POST['Campania']['accion']) != '') {
                    foreach ($_POST['Campania']['accion'] as $key => $tipo) {
//                    var_dump($model)
                        $CampaniaAccion = new CampaniaAccion();
                        $CampaniaAccion->entidad_tipo = $tipo;
                        $CampaniaAccion->campania_id = $model->id;
                        $CampaniaAccion->save();
                    }
                }
                $this->redirect(array('admin'));
            }
        }
        $this->render('create', array(
            'model' => $model,
        ));
    }

    /**
     * Updates a particular model.
     * If update is successful, the browser will be redirected to the 'view' page.
     * @param integer $id the ID of the model to be updated
     * *-Formatera fecha, guardar usuario actualizacion
     * **@autor Alex Yépez <ayepez@tradesystem.com.ec>
     */
    public function actionUpdate($id) {
        $model = $this->loadModel($id);
//validación por ajax
//        $this->performAjaxValidation($model);
//formatear fecha al cargar
//inicio
        $model->fecha_inicio = $model->fecha_inicio ? Util::FormatDate($model->fecha_inicio, "d/m/Y") : null;
//inicio
        $model->fecha_fin = $model->fecha_fin ? Util::FormatDate($model->fecha_fin, "d/m/Y") : null;
        $result = array();
        /**
         * @author Mauricio Chamorro <mchamorro@tradesystem.com.ec>
         * para encontrar las acciones de la campaña
         */
        $acc = array();
        $acciones = CampaniaAccion::model()->findAllByAttributes(array('campania_id' => $id));
        foreach ($acciones as $key) {
            array_push($acc, $key['oldValues']['entidad_tipo']);
        }
        $acc = array_combine($acc, $acc);
        $model->accion = $acc; //setea las acciones 


        /**
         * @author Miguel Alba <malba@tradesystem.com.ec>
         * Actualizacion de las camapanias mediante un modal
         *         $result OBTENER
         */
//        $result = array();
        if (Yii::app()->request->isAjaxRequest) {

            $validadorPartial = false;

            if (isset($_POST['Campania'])) {

                $model->attributes = $_POST['Campania'];

                if ($model->validate()) {//CAPTURAR LOS ERRRORES
                    $model->fecha_inicio = $model->fecha_inicio ? Util::FormatDate($model->fecha_inicio, "Y/m/d") : null;
//inicio
                    $model->fecha_fin = $model->fecha_fin ? Util::FormatDate($model->fecha_fin, "Y/m/d") : null;
//update del detalle de accion

                    if ($_POST['Campania']['accion'] != '') {
                        CampaniaAccion::deleteCampania($model->id);
                        foreach ($_POST['Campania']['accion'] as $key => $tipo) {
                            $CampaniaAccion = new CampaniaAccion();
                            $CampaniaAccion->entidad_tipo = $tipo;
                            $CampaniaAccion->campania_id = $model->id;

                            $CampaniaAccion->save();
                        }
                    } else {
                        CampaniaAccion::deleteCampania($model->id);
                    }
                    $result['success'] = $model->save();
                    if (!$result['success']) {
                        $result['mensage'] = "Error al actualizar ";
                    } else {
                        Actividad::registrarActividad($model, Actividad::TIPO_UPDATE);
                        $validadorPartial = TRUE;
                        $result['nombreCampania'] = $model->nombre;
                    }

                    echo json_encode($result);
                } else {
                    $result['success'] = false;
                    $result['errors'] = $model->getErrors();
                    $validadorPartial = true;
                    echo json_encode($result);
                }
            }

            if (!$validadorPartial) {
                $this->renderPartial('_form_modal', array('model' => $model), false, true);
            }
        } else {

            if (isset($_POST['Campania'])) {
                $model->attributes = $_POST['Campania'];
                /* guardar usuario actualización */
                $model->usuario_actualizacion_id = Yii::app()->user->id;
                /* formatear fecha al guardar */
//inicio
                $model->fecha_inicio = $model->fecha_inicio ? Util::FormatDate($model->fecha_inicio, "Y/m/d") : null;
//inicio
                $model->fecha_fin = $model->fecha_fin ? Util::FormatDate($model->fecha_fin, "Y/m/d") : null;
                if ($model->save()) {
//update del detalle de accion
                    if (isset($_POST['Campania']['accion'])) {
                        if ($_POST['Campania']['accion'] != '') {
                            CampaniaAccion::deleteCampania($model->id);
                            foreach ($_POST['Campania']['accion'] as $key => $tipo) {
                                $CampaniaAccion = new CampaniaAccion();
                                $CampaniaAccion->entidad_tipo = $tipo;
                                $CampaniaAccion->campania_id = $model->id;
                                $CampaniaAccion->save();
                            }
                        } else {
                            CampaniaAccion::deleteCampania($model->id);
                        }
                    }

                    Actividad::registrarActividad($model, Actividad::TIPO_UPDATE);
                    $this->redirect(array('admin'));
                }
            }
            $this->render('update', array(
                'model' => $model,
//                'acciones' => $acc
            ));
        }
    }

    /**
     * Deletes a particular model.
     * If deletion is successful, the browser will be redirected to the 'admin' page.
     * @param integer $id the ID of the model to be deleted
     */
    public function actionDelete($id) {
        if (Yii::app()->request->isPostRequest) {
            $model = new Campania;
// we only allow deletion via POST request
            $model->setEstadoAnulado($id);
//            $this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
            if (!isset($_GET['ajax']))
//                Actividad::registrarActividad($model, Actividad::TIPO_DELETE);
                $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
        } else
            throw new CHttpException(400, 'Invalid request. Please do not repeat this request again.');
    }

    /**
     * Manages all models.
     */
    public function actionAdmin() {
        $model = new Campania('search');
        $model->unsetAttributes(); // clear any default values
        if (isset($_GET['Campania'])) {
            $model->attributes = $_GET['Campania'];
        }
        if ($model->estado_anulado()->findAll()) {
            $this->render('admin', array(
                'model' => $model,
            ));
        } else {
            $this->render('empty', array('model' => $model));
        }
    }

    /**
     * @author Diego Echeverria <decheverria@tradesystem.com.ec>
     * actionDashboar: es la accion que nos permite ir al dashboar de gestiond e campañas.
     */
    public function actionDashboard($campania_id) {

        $campaniaVisible = Campania::model()->accionDeCampania($campania_id);

        ($campaniaVisible) ? $this->render('dashboard', array('id' => $campania_id)) : $this->render('empty', array('id' => $campania_id, 'campaniaVisible' => $campaniaVisible));
    }

    public function assignParamsOperador($params) {
        $result = array();
        if ($params['filters'][0] == 'all') {
            foreach (CampaniaClientesOwner::model()->searchParams(true) as $param) {
                $result[$param] = $params['value'];
            }
        } else {

            foreach ($params['filters'] as $param) {
                $result[$param] = $params['value'];
            }
        }

        return $result;
    }

    public function assignParams($params) {
        $result = array();
        if ($params['filters'][0] == 'all') {
            foreach (CampaniaClientesOwner::model()->searchParams() as $param) {
                $result[$param] = $params['value'];
            }
        } else {
            foreach ($params['filters'] as $param) {
                $result[$param] = $params['value'];
            }
        }
        return $result;
    }

    /**
     * Returns the data model based on the primary key given in the GET variable.
     * If the data model is not found, an HTTP exception will be raised.
     * @param integer the ID of the model to be loaded
     */
    public function loadModel($id, $modelClass = __CLASS__) {
        $model = Campania::model()->findByPk($id);
        if ($model === null)
            throw new CHttpException(404, 'The requested page does not exist.');
        return $model;
    }

    /**
     * Performs the AJAX validation.
     * @param CModel the model to be validated
     */
    protected function performAjaxValidation($model, $form = null) {
        if (isset($_POST['ajax']) && $_POST['ajax'] === 'campania-form') {

//            var_dump(CActiveForm::validate($model));
            echo CActiveForm::validate($model);
            Yii::app()->end();
        }
    }

    /**
     * @author Diego Gabriel Echeverria <decheverria@tradesystem.com.ec>
     * @param type $cuenta_id
     * @param type $tipo_accion
     * @return type array()
     * Devuelve un array de contactos por cuenta segun el tipo de accion 
     */
    public function contactosPorTipoAccion($cuenta_id, $tipo_accion) {

        $data = array();
        if ($tipo_accion == Campanias_Constants::EMAIL) {//cuando un usuario tenga mails
            $data = Contacto::model()->findAll(array(
                "condition" => "cuenta_id =:cuenta_id AND (email_1 IS NOT NULL OR email_2 IS NOT NULL) ",
                "order" => "nombre",
                "params" => array(':cuenta_id' => $cuenta_id,)
            ));
        } elseif ($tipo_accion == Campanias_Constants::LLAMADA) {//cuando un usuario tenga llamadas
            $data = Contacto::model()->findAll(array(
                "condition" => "cuenta_id =:cuenta_id AND (telefono IS NOT NULL)",
                "order" => "nombre",
                "params" => array(':cuenta_id' => $cuenta_id,)
            ));
        } elseif ($tipo_accion == Campanias_Constants::SMS) {//cuando un usuario tenga llamadas
            $data = Contacto::model()->findAll(array(
                "condition" => "cuenta_id =:cuenta_id AND (celular IS NOT NULL)",
                "order" => "nombre",
                "params" => array(':cuenta_id' => $cuenta_id,)
            ));
        }
        return $data;
    }

    /*     * ************************************funciones Ajax************************************************ */

    /**
     * @author Miguel Alba <malba@tradesystem.com.ec>
     * @param type $id
     * Muestra la informacion de las actividades de cada Campaña
     */
    public function actionAjaxCargarActividades($id) {
        $model = $this->loadModel($id);
        $result = array();
//        var_dump($model);
        if (Yii::app()->request->isAjaxRequest) {
            $result['success'] = true;
            $result['html'] = $this->renderPartial('portlets/_actividades', array('model' => $model, 'modal' => TRUE), TRUE, false);
            echo json_encode($result);
        }
    }

    /**
     * Mostrar la vista para la gestion d los clientes de un Operador agregado a una campaña
     * @author Miguel Alba <malba@tradesystem.com.ec>
     */
    public function actionGestionOperadorAcciones($campania_id = null) {

//valor de busqueda
        $modelCampaniaOwner = new CampaniaClientesOwner('search');
        $modelCampaniaOwner->unsetAttributes(); // clear any default values
        if (Yii::app()->request->isAjaxRequest) {
            if (isset($_GET['search'])) {
                $modelCampaniaOwner->campania_id = $campania_id;
                $modelCampaniaOwner->attributes = $this->assignParamsOperador($_GET['search']);
            }
        }
        $rolUser = Util::getRolUser(Yii::app()->user->id);
        if (Util::validarRol($rolUser, array(Constants::ROL_OPERADOR))) {

            $model = Campania::model()->findByPk($campania_id);
            $this->render('gestionClientesOperador', array('model' => $model, 'modelCampaniaOwner' => $modelCampaniaOwner, 'idRol' => Yii::app()->user->id));
        }
    }

    /**
     * @author Miguel Alba <malba@tradesystem.com.ec>
     * mostrar las campanias es asignado Cada Operador
     */
    public function actionCampaniasRoles() {
        $modelCampania = new Campania('search');
        $modelCampania->unsetAttributes(); // clear
//Filtro
        if (Yii::app()->request->isAjaxRequest) {

            if (isset($_GET['search'])) {
                $modelCampania->attributes = $this->assignParamsAdminOperador($_GET['search']);
            }
        }
        $rolUser = Util::getRolUser(Yii::app()->user->id);
        if (Util::validarRol($rolUser, array(Constants::ROL_OPERADOR))) {

            $this->render('campaniasOperadores', array('modelCampania' => $modelCampania, 'idRol' => Yii::app()->user->id));
        }
    }

//Filtro para la busqeda  y asignar los parametros de las campañas de un operador asignado
    /**
     * @author Miguel Alba <malba@tradesystem.com.ec>
     * @param type $params
     * @return type
     */
    public function assignParamsAdminOperador($params) {
        $result = array();
        if ($params['filters'][0] == 'all') {
            foreach (Campania::model()->searchParams() as $param) {
                $result[$param] = $params['value'];
            }
        } else {

            foreach ($params['filters'] as $param) {
                $result[$param] = $params['value'];
            }
        }

        return $result;
    }

    public function actionAjaxCargarInformacionCampania($id) {
        $model = $this->loadModel($id);
        $result = array();
        if (Yii::app()->request->isAjaxRequest) {
            $result['success'] = true;
            $result['html'] = $this->renderPartial('portlets/_info', array('model' => $model, 'modal' => TRUE), TRUE, false);
            echo json_encode($result);
        }
    }

    /**
     * @author Mauricio Chamorro <mchamorro@tradesystem.com.ec>
     * Busca los clientes de las campañas dependiendo si tiene habilitado Email, llamada o sms
     * 
     */
    public function actionAjaxGetClientesCuenta() {
        if (Yii::app()->request->isAjaxRequest) {
            if (isset($_POST['cuenta_id']) && $_POST['cuenta_id'] > 0 && isset($_POST['tipo_accion'])) {
                if ($_POST['tipo_accion'] == Campanias_Constants::EMAIL) {//cuando un usuario tenga mails
                    $data = Contacto::model()->findAll(array(
                        "condition" => "cuenta_id =:cuenta_id AND (email_1 IS NOT NULL OR email_2 IS NOT NULL) ",
                        "order" => "nombre",
                        "params" => array(':cuenta_id' => $_POST['cuenta_id'],)
                    ));
                } elseif ($_POST['tipo_accion'] == Campanias_Constants::LLAMADA) {//cuando un usuario tenga llamadas
                    $data = Contacto::model()->findAll(array(
                        "condition" => "cuenta_id =:cuenta_id AND (telefono IS NOT NULL)",
                        "order" => "nombre",
                        "params" => array(':cuenta_id' => $_POST['cuenta_id'],)
                    ));
                } elseif ($_POST['tipo_accion'] == Campanias_Constants::SMS) {//cuando un usuario tenga llamadas
                    $data = Contacto::model()->findAll(array(
                        "condition" => "cuenta_id =:cuenta_id AND (celular IS NOT NULL)",
                        "order" => "nombre",
                        "params" => array(':cuenta_id' => $_POST['cuenta_id'],)
                    ));
                }
            }
            if (!isset($data)) { //si data no existe
                $data = false;
            }

            if ($data) {
                $data = CHtml::listData($data, 'id', 'nombre');
                echo CHtml::tag('option', array('value' => 0, 'id' => 'p'), '- Clientes -', true);
                foreach ($data as $value => $name) {
                    echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
                }
            } else {
                echo CHtml::tag('option', array('value' => 0), '- No existen opciones -', true);
            }
        } else {
            echo CHtml::tag('option', array('value' => 0, 'id' => 'p'), '- Seleccione una cuenta -', true);
        }
    }

    /**
     * @author Mauricio Chamorro <mchamorro@tradesystem.com.ec>
     * Busca las cuentas de campñas que son asignadas a un responsable
     * 
     */
    public function actionAjaxGetCuentasResponsable() {
        if (Yii::app()->request->isAjaxRequest) {
            if (isset($_POST['owner_id']) && $_POST['owner_id'] > 0) {

                $data = CampaniaClientesOwner::model()->findAll(array(
                    "condition" => "owner_id =:owner_id AND campania_id=:campania_id",
                    "order" => "id",
                    "params" => array(':owner_id' => $_POST['owner_id'], ':campania_id' => $_POST['campania_id'],)
                ));
            }
            if (!isset($data)) { //si data no existe
                $data = false;
            }
            if ($data) {
                $data = CHtml::listData($data, 'cuenta_id', 'cuenta');
                echo CHtml::tag('option', array('value' => 0, 'id' => 'p'), '- Cuentas -', true);
                foreach ($data as $value => $name) {
                    echo CHtml::tag('option', array('value' => $value), CHtml::encode($name), true);
                }
            } else {
                echo CHtml::tag('option', array('value' => 0), '- No existen opciones -', true);
            }
        } else {
            echo CHtml::tag('option', array('value' => 0, 'id' => 'p'), '- Seleccione un responsable -', true);
        }
    }

    /*     * ***********************MAIL************************************* */

    /**
     * @author Diego Gabriel Echeverria <decheverria@tradesystem.com.ec>
     * Carga los medios de Envio de MAil 
     */
    public function actionAjaxCargarMedioEnvio() {
        $medios_envio = Constants::$codigoMail;
        $result = array();
        $campania_owner_ids = $_POST['campania_owner_id'];
        $campania_id = $_POST['campania_id'];
        $contacto_id = null;
        $contactos_id = array();
        $contactos = array();
        if (isset($_POST['contacto_id'])) {
            $contacto_id = $_POST['contacto_id'];
        }
        //envio a todos
        if ($campania_owner_ids == 'todos') {
            $contactos = 'all';

//            $campania = Campania::model()->findByPk($campania_id);
//            $campania_owner_ids = array_map('AweHtml::getPrimaryKey', $campania->campaniaClientesOwners);
//            $contactos_id = CampaniaClientesOwner::model()->getClientesAccion(implode(',', $campania_owner_ids), Campanias_Constants::EMAIL);
        }
        //Selecionado//
        else if (is_array($campania_owner_ids)) {
            $contactos_id = CampaniaClientesOwner::model()->getClientesAccion(implode(',', $campania_owner_ids), Campanias_Constants::EMAIL);
        }
        //envio solo uno
        else {
            $contactos_id = CampaniaClientesOwner::model()->getClientesAccion($campania_owner_ids, Campanias_Constants::EMAIL);
        }
        $alerta = false;
        if ($contactos != 'all') {
            foreach ($contactos_id as $key => $value) {
                $contacto = Contacto::model()->findBYPk($value);
                if ($contacto->email) {
                    $contactos[] = $contacto->id;
                } else {
                    $alerta = true;
                }
            }
        }

//        var_dump('cco_id', $campania_owner_ids, 'contacto_id', $contacto_id, $contactos_id);
// Verificar que los clientes tengan correo
        if (!empty($contactos) || $contactos == 'all') {
            $result['success'] = true;
            $result['html'] = $this->renderPartial('_medio_envio_modal', array('medios_envio' => $medios_envio, 'modal' => TRUE, 'contactos' => $contactos, 'alerta' => $alerta, 'cco_id' => $campania_owner_ids, 'campania_id' => $campania_id), TRUE, true);
        } else {
            $result['success'] = false;
            $result['error'] = 'Ninguno contacto de la cuenta seleccionada tiene correo electronico.';
        }

        echo json_encode($result);
    }

    /**
     * Enviar informacion necesario a la vista tipo Mandril 
     * el respectivo id del cliente solo unicamente si tiene 
     * email1 o email2
     * @author Miguel Alba <malba@tradesystem.com.ec>
     *  
     */
    public function actionAjaxCargarMedioEnvioContactoCampania() {
        $medios_envio = Constants::$codigoMail;
        $result = array();

// Recoje en $ids todos los id de los clientes selecionados a los cuales se les va 
// a enviar el sms.
        $cuenta_id = $_POST['id_cuenta']; //Representaria el id del contacto
        $cco_id = $_POST['cco_id']; //id del registro de campania cliente owner
// Verificar que los clientes tengan correo
        $contactos = $this->contactosPorTipoAccionContactos($cuenta_id, Campanias_Constants::EMAIL); //array();
        $contactos_id = array();
        $alerta = false;
        if (!empty($contactos)) {
            foreach ($contactos as $contacto) {
                if ($contacto->email_1) {
                    $contactos_id[] = $contacto->id;
                } else if ($contacto->email_2) {
                    $contactos_id[] = $contacto->id;
                } else {
                    $alerta = true;
                }
            }
            $result['success'] = true;
            $result['html'] = $this->renderPartial('_medio_envio_modal', array('medios_envio' => $medios_envio, 'modal' => TRUE, 'contactos' => $contactos_id, 'alerta' => $alerta, 'cco_id' => $cco_id), TRUE, true);
        } else {
            $result['success'] = false;
            $result['error'] = 'El contacto no  tiene correo electronico.';
        }

        echo json_encode($result);
    }

    /**
     * @author Miguel Alba <malba@tradesystem.com.ec>
     * Muestra la informacion del contacto si tiene la informacion reqerida 
     * @param type $cliente_id
     * @param type $tipo_accion
     * @return type
     */
    public function contactosPorTipoAccionContactos($cliente_id, $tipo_accion) {

        $data = array();
        if ($tipo_accion == Campanias_Constants::EMAIL) {//cuando un usuario tenga mails
            $data = Contacto::model()->findAll(array(
                "condition" => "id =:cliente_id AND (email_1 IS NOT NULL OR email_2 IS NOT NULL) ",
                "order" => "nombre",
                "params" => array(':cliente_id' => $cliente_id,)
            ));
        } elseif ($tipo_accion == Campanias_Constants::LLAMADA) {//cuando un usuario tenga llamadas
            $data = Contacto::model()->findAll(array(
                "condition" => "id =:cliente_id AND (telefono IS NOT NULL)",
                "order" => "nombre",
                "params" => array(':cuenta_id' => $cliente_id,)
            ));
        } elseif ($tipo_accion == Campanias_Constants::SMS) {//cuando un usuario tenga llamadas
            $data = Contacto::model()->findAll(array(
                "condition" => "id =:cliente_id AND (celular IS NOT NULL)",
                "order" => "nombre",
                "params" => array(':cliente_id' => $cliente_id,)
            ));
        }
        return $data;
    }

    public function actionAjaxCargarFormularioMedioEnvio() {
        $result = array();
        $medios_envio = Constants::$codigoMail;
        $id_campania = $_POST['id_campania'];
        $cco_id = $_POST['cco_id'];
        if (isset($_POST['medio'])) {
            $medio_envio_id = $_POST['medio'][0];

            $medio_nombre = $medios_envio[$medio_envio_id];
            $medio_nombre = $medio_nombre['nombre'];
            if ($medio_nombre == Constants::MAIL_MANDRILL) {
                $model = new MailForm();
                $mandrill = new Mandrill(Constants::KEY_MANDRILLAPP);
// $list_templates = $mandrill->templates->getList();
//$templates = $this->templatesMandrill($list_templates);
                $model->contactos = $_POST['id_contactos'];
                $model->medio_envio = Constants::MAIL_MANDRILL;
                $model->campania_id = $_POST['id_campania'];

                $result['success'] = true;
                $result['html'] = $this->renderPartial('mandrillmail.views.mandrillMail._mail_sender_mandrill', array('model' => $model, 'mandrill' => $mandrill, 'alerta' => $_POST['alerta'], 'cco_id' => $cco_id, /* 'tarea_id' => $tarea_id */), TRUE, TRUE);
            } else if ($medio_nombre == Constants::MAIL_YIIMAILER) {
                $model = new MailForm();
                $model->contactos = $_POST['id_contactos'];
                $model->campania_id = $_POST['id_campania'];

                $model->medio_envio = Constants::MAIL_YIIMAILER;

                $result['success'] = true;
                $result['html'] = $this->renderPartial('mail.views.mail._mail_sender', array('model' => $model, 'alerta' => $_POST['alerta'], 'cco_id' => $cco_id, /* 'tarea_id' => $tarea_id */), true, true);
            }
        } else {
            $result['error'] = 'Seleccione por lo menos un medio de envio.';
        }
        echo json_encode($result);
    }

}
